As businesses increasingly rely on computers for their daily operations, managing the vast amount of business information generated and processed has become a significant challenge. Most large businesses have a wide variety of application programs managing large volumes of data stored on many different types of storage devices across various types of networks and operating system platforms. These storage devices can include tapes, disks, optical disks, and other types of storage devices and often include a variety of products produced by many different vendors. Each product typically is incompatible with the products of other vendors. Because of these complexities in managing a heterogeneous storage environment, specialized storage management applications have been developed to assist network and information administrators in managing storage resources.
Storage devices have become increasingly sophisticated, providing such capabilities as allowing input and output to be scheduled through multiple paths to a given disk within a disk array. Such disk arrays are referred to herein as multi-path arrays. Often, vendors of storage devices provide their own application programming interfaces (APIs) and/or command line utilities for using the specialized features of their own storage devices, but these APIs and command line utilities are not compatible from vendor to vendor. Implementing the ability to use these features in application programs, such as storage management applications, is complicated by the fact that detailed attribute information from the storage device is needed. For example, to make use of a multi-path disk array, the type of the disk array is needed. This attribute information is typically not available to an application program, because it is not used by, and therefore not available from, the underlying operating system.
Typically, the storage devices available to a host computer system are determined at boot time by the operating system. Determining that a new device has been added or providing a modified driver for a storage device requires rebooting the host computer system or using an operating system command line utility. These operating system operations typically require shutting down application programs running on the host system, including storage management applications, thereby disrupting business operations. With today's 24×7 operating environments, such shutdowns can be very costly. The ability to make configuration changes to storage environments dynamically while application programs are running is needed.
For example, to add a new type of storage device to a storage environment, a vendor of a storage management application often must modify an existing version of the storage management application code, as well as add a new storage device driver or modify an existing storage device driver. The new storage device is tested by storage management application vendor personnel and incorporated into a later release of the storage management application.
This process for making new storage devices available has proven costly for vendors of storage management applications, as support for each new storage device requires a new release, a costly and time-consuming project. Furthermore, the release process has proven untimely for the vendors of storage devices, as support for their products depends upon the release schedules for storage management applications in which their products are used, slowing time to market for storage devices.
What is needed is the ability to dynamically add or modify support for a storage device in a storage management application.